/**
 * 权限控制工具函数
 */

import { useUserStore } from '@/stores/user'

/**
 * 检查用户权限
 * @param _permission 权限标识
 */
export function checkPermission(_permission: string): boolean {
  const userStore = useUserStore()
  const { userInfo } = userStore
  
  if (!userInfo) return false
  
  // 管理员拥有所有权限
  if (userInfo.user_type === 'admin') return true
  
  // 检查用户权限 - 这里需要根据实际用户数据结构调整
  // 目前假设所有用户都有权限，后续需要根据实际业务调整
  return true
}

/**
 * 检查用户角色
 * @param role 角色标识
 */
export function checkRole(role: string): boolean {
  const userStore = useUserStore()
  const { userInfo } = userStore
  
  if (!userInfo) return false
  
  // 检查用户角色
  const roles: string[] = []
  return roles.includes(role)
}

/**
 * 权限指令
 */
export const permissionDirective = {
  mounted(el: HTMLElement, binding: any) {
    const { value } = binding
    
    if (value && value instanceof Array && value.length > 0) {
      const permissions = value
      const hasPermission = permissions.some((permission: string) => {
        return checkPermission(permission)
      })
      
      if (!hasPermission) {
        el.parentNode && el.parentNode.removeChild(el)
      }
    } else {
      throw new Error('需要权限数组! 例如: v-permission="[\'admin\']"')
    }
  }
}